package com.lzy.cloud.order.strategy;

import com.lzy.cloud.order.dtos.BaseOrderDto;
import com.lzy.cloud.order.dtos.PayOrderMoneyDto;

/**
 * @Description: 订单公共接口策略
 * @Author:   gyl
 * @Date:     2018/7/6 9:31
 */
public interface StrategyOrder<Dto extends BaseOrderDto> {
    
    /**
     * 方法说明：新增订单
     * @param    dto 订单基础信息
     * @return     支付订单信息
     * @date        2018/7/6 9:39
     */
    BaseOrderDto createOrder(Dto dto);

    /**
     * 方法说明：订单确认支付
     * @param    dto 订单基础信息
     * @return
     * @date        2018/7/6 15:02
     */
    PayOrderMoneyDto confirmPay(Dto dto);

    /**
     * 方法说明：查询订单
     * @param    orderId 订单号
     * @return     订单详情基础信息
     * @date        2018/7/6 14:58
     */
    BaseOrderDto selectOrderByOrderId(String orderId);

    /**
     * 方法说明：取消订单
     * @param    dto 订单基础信息
     * @return
     * @date        2018/7/6 15:01
     */
    Boolean cancel(BaseOrderDto dto);

    /**
     * 方法说明：订单确认收货
     * @param    dto 订单基础信息
     * @return
     * @date        2018/7/6 15:02
     */
    Boolean confirm(BaseOrderDto dto);
}
